﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;


/// <summary>
/// 一：Windows程序创建和类文件
/// 1.windows程序(winform程序、桌面程序、C/S( Client/Server))
/// 
/// 2.程序启动：
/// 在这个Run方法里面运行的窗体对象，就表示程序的主窗体。也就是说这个窗体会被首先启动起来，并且通过这个窗体
/// 我们可以项目的其他窗体。或执行其他的操作。如果这个窗体关闭，则整个程序退出
/// 
/// 3、Windows窗体继承Form
/// Form类是.NET平台提供的一个窗体类，我们创建的任何窗体都会继承这个类，也就是说我们的窗体类会
/// 自动的具有Form的属性、方法、事件等
/// 
/// 4.partial修饰的类，在编译的时候，会统一编译成一个类
/// 
/// 5.控件和窗体的关系
/// 当前窗体中的任何控件，都是当前这个窗体类的一个“成员变量”，并且在窗体的构造方法中创建了这个对象
/// 
/// 6.窗体相关的属性(见教材和视频)
/// 
/// 二：Windows程序的事件机制？
/// 1.什么是事件？什么是Windows程序的事件机制？(Event)
/// Windows操作系统整个任务的操作(用户操作)都是基于事件机制完成的(消息驱动机制)
/// 2.事件机制的模型（四个条件）
/// 【1】 定义事件：规定这个事件是什么类型(用户的什么操作)
/// 【2】处理事件：(事件响应)也就是用户对控件执行运动的时候，程序具体的业务处理。
/// 要求：你写的这个处理方法必须和事件委托规定的参数的=类型和个数一样.
/// 【3】关联事件：也就是将处理事件的方法和对应的事件关联起来
/// 【4】激发事件：又用户去对控件执行事件规定动作(单击、双击、键盘按下...)
/// 
/// 
/// 3.事件机制的综合应用
/// 
/// 4.事件机制的优化
/// Form(窗体的基类
/// Control(控件的基类)
/// Button:ButtonBase
/// ButtonBase:Control
/// Button-->ButtonBase-->Control
/// 
/// 三大特性：封装、继承、多态
/// 
/// public virtual void Add(Control value);
/// 当我们调用Add方法的时候，里面的参数类型或者Control对象，也可以是Control对象的子类对象
/// 
/// 结论：控件全部放到了Control集合中，我们就可以通过这个集合去找到我们需要的控件
/// 
/// 5.事件的动态管理
/// 
/// 6.Windows窗体对象创建和显示的两种模式
/// </summary>

namespace CSharp_Form_Event
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new FormMain());
        }
    }
}
